🎒 Proyecto: LootHero - Sistema de Inventario
De: Lead Game Designer
Para: Equipo de Programación
Asunto: Requisitos para el sistema de saqueo (Loot)
¡Hola equipo!
Necesitamos implementar el núcleo de nuestro RPG: el sistema de Inventario. Queremos que el código para manejar mochilas y cofres sea muy limpio y fácil de leer para los diseñadores de niveles.
No os diré qué métodos crear, pero sí cómo queremos usar el código en el script del juego. Necesitamos que las clases Item e Inventario soporten las siguientes operaciones:
⚔️ Requisitos de Jugabilidad
1. Los Objetos (Item)
Cualquier objeto del juego (espadas, pociones, monedas) tiene:
- Un nombre.
- Un peso (kg).
- Un valor (monedas de oro).
2. El Inventario (Inventario)
Es la mochila del héroe o el contenido de un cofre.
- Tiene una capacidad máxima de peso. Si intentamos meter algo que exceda el peso, debe fallar.
- Debe guardar una colección de Items.
3. Mecánicas "Mágicas" (Lo importante)
Queremos poder hacer esto en el código del juego:
a) Fusión de Inventarios (+):
Cuando el héroe saquea un cofre, queremos escribir:
mochila_final = mochila_heroe + cofre_tesoro
- Esto debe devolver un nuevo inventario con los objetos de ambos.
- La capacidad del nuevo inventario debe ser la del primero (la del héroe).
- OJO: Si la suma de pesos supera la capacidad, la operación debe fallar (devolver el original o lanzar error, decididlo vosotros).
b) Búsqueda Rápida (in):
Para comprobar misiones, queremos escribir:
if "Llave del Mazmorra" in mi_mochila:
- El sistema debe buscar si hay algún Item con ese nombre dentro.
c) Información (len y str):
len(mochila): Debe decirnos la cantidad de objetos que hay dentro.print(mochila): Debe mostrar un listado legible y el estado del peso (ej: "Mochila de Cuero: 5/20kg (3 items)").
🧪 Script de Prueba del Diseñador
Vuestro código debe pasar esta prueba:
# Crear items
espada = Item("Espada Oxidada", peso=2, valor=10)
pocion = Item("Poción Vida", peso=0.5, valor=50)
# Crear inventarios
mochila = Inventario(capacidad_max=10)
mochila.agregar(espada)
cofre = Inventario(capacidad_max=5) # Los cofres son pequeños
cofre.agregar(pocion)
# 1. PRUEBA DE SUMA (+)
print("Saqueando cofre...")
mochila = mochila + cofre # ¡Aquí ocurre la magia!
# 2. PRUEBA DE CONTAINS (in)
if "Poción Vida" in mochila:
print("¡Tengo la poción!")
# 3. INFO
print(mochila) # Debería salir info bonita
print(f"Items totales: {len(mochila)}")
¡Confiamos en vosotros! Haced que la sintaxis sea mágica.